package com.mutear.ParallelSearcher.utils;

import java.util.ArrayList;

/**
 * 该抽象类中的 distance 表示该搜索结果与最佳搜索结果的距离<br>
 * 但 distance 并没有明确的定义，随业务逻辑的变化而变化<br>
 * 但只要按照“distance 表示该搜索结果与最佳搜索结果的距离”这一准则来定义<br>
 * 就不会因为业务逻辑的不同，而使得排序算法的失效
 * @author Mutear
 *
 */
public abstract class IResult {
	protected double distance;
	
	public abstract boolean equal(IResult r2);
	
	/**
	 * 查找该对象在参数 results 中的位置<br>
	 * 若没有，则返回 -1
	 * @param results
	 * @return
	 */
	public int indexInList(ArrayList<IResult> results) {
		for(int i = 0;i < results.size();i++){
			if(equal(results.get(i))){
				return i;
			}
		}
		return -1;
	}
	
	public void setDistance(double distance) {
		this.distance = distance;
	}
	public double getDistance() {
		return distance;
	}
	
}
